﻿//用来分配auth的模态框中显示auth的树形结构数据
function fillAuthTree() {
//准备生成属性结构的数据
    var ajaxReturn = $.ajax({
        url:"/assign/getAllAuth",
        type:"post",
        dataType:"json",
        "async":false,
    });

    if (ajaxReturn.status!=200){
        console.log(ajaxReturn.status);
    }

    //获取数据
    var authList = ajaxReturn.responseJSON.data;
    //准备对ztree进行设置的json对象
    var setting = {
        data:{
            simpleData: {
                //开启简单json功能
                enable:true,
                //使用categoryId属性关联父结点,不用pid
                pIdKey: "categoryId"
            },
            key:{
                //使用title属性显示节点名称
                "name":"title"
            }
        },
        check:{
            "enable":true
        }
    };
    //初始化树形结构
    $.fn.zTree.init($("#authTreeDemo"), setting, authList);

    //默认展开结点
    var ztreeObj = $.fn.zTree.getZTreeObj("authTreeDemo");
    ztreeObj.expandAll(true);







    //查询已分配的auth的id组成的数组
    ajaxReturn = $.ajax({
        url:"/assign/getAssigned",
        type:"post",
        dataType:"json",
        "async":false,
        data:{
            "roleId":window.roleId
        }
    });
    //根据已分配的，将对应的结点勾选
    if (ajaxReturn.status!=200){
        console.log(ajaxReturn.status);
    }

    //获取数据
    var authArray = ajaxReturn.responseJSON.data;
    for (var i = 0 ; i < authArray.length;i++){
        var authId = authArray[i];
        var treeNode = ztreeObj.getNodeByParam("id",authId);
        //设置true：结点勾选  设置false：结点不联动
        ztreeObj.checkNode(treeNode,true,false)
    }
}














//打开删除操作后的确认模态框
function showRemoveModal(roleArray) {
    //打开模态框
    $("#removeModel").modal("show");
    $("#roleNameSpan").empty();

    window.roleIdArray = [];
    //遍历role数组
    for (var i = 0; i < roleArray.length ; i++){
        var role = roleArray[i];
        var roleName = role.roleName;
        $("#roleNameSpan").append(roleName+"<br>");
        //存入新元素到id数组
        window.roleIdArray.push(role.roleId);
    }
}








//执行页码，生成页面效果
function generatePage() {
    //获取分页数据
    var pageInfo = getPageInfoRemote();
    //填充表格
    fillTableBody(pageInfo);
}




//远程访问服务器端程序获取pageInfo数据
function getPageInfoRemote() {
    var ajaxResult = $.ajax({
        url :"/role/getPageInfo",
        type:"post",
        data:{
            "pageNum":window.pageNum,
            "pageSize":window.pageSize,
            "keyword":window.keyword
        },
        async:false,
        dataType:"json",
    });
    //判断状态吗是否为200
    var statusCode = ajaxResult.status;
    if (statusCode!=200){
        console.log("失败");
        return null;
    }
    //获取responseBody中的数据
    var common = ajaxResult.responseJSON;
    //判断后端返回的结果是否成功
    var result = common.result;
    if (result == "FAILED"){
        console.log(common.message)
        return null;
    }
    //如果成功，获取数据
    var pageInfo = common.data;
    return pageInfo;
}


//填充表格
function fillTableBody(pageInfo) {

    //清除tbody中旧的数据
    $("#rolePageBody").empty();

    //清空页码栏  没有搜索结果时不显示导航栏
    $("#Pagination").empty();


    if (pageInfo == null || pageInfo == undefined || pageInfo.list == null || pageInfo.list.length==0){
        $("#rolePageBody").append("<tr><td colspan='4'>没有查询到您要的数据</td></tr>");
        return;
    }
    // 使用pageInfo的list属性填充tbody
    for(var i = 0; i < pageInfo.list.length; i++) {

        var role = pageInfo.list[i];

        var roleId = role.id;

        var roleName = role.name;

        var numberTd = "<td>"+(i+1)+"</td>";
        var checkboxTd = "<td><input id='"+roleId+"' class='itemBox' type='checkbox'></td>";
        var roleNameTd = "<td>"+roleName+"</td>";

        var checkBtn = "<button id='"+roleId+"' type='button' class='btn btn-success btn-xs checkBtn'><i class=' glyphicon glyphicon-check'></i></button>";

        // 通过button标签的id属性（别的属性其实也可以）把roleId值传递到button按钮的单击响应函数中，在单击响应函数中使用this.id
        var pencilBtn = "<button id='"+roleId+"' type='button' class='btn btn-primary btn-xs pencilBtn'><i class=' glyphicon glyphicon-pencil'></i></button>";

        // 通过button标签的id属性（别的属性其实也可以）把roleId值传递到button按钮的单击响应函数中，在单击响应函数中使用this.id
        var removeBtn = "<button id='"+roleId+"' type='button' class='btn btn-danger btn-xs removeBtn'><i class=' glyphicon glyphicon-remove'></i></button>";

        var buttonTd = "<td>"+checkBtn+" "+pencilBtn+" "+removeBtn+"</td>";

        var tr = "<tr>"+numberTd+checkboxTd+roleNameTd+buttonTd+"</tr>";

        $("#rolePageBody").append(tr);
    }

    // 生成分页导航条
    generateNavigator(pageInfo);
}



//生成分页页码导航条
function generateNavigator(pageInfo) {
    // 获取总记录数
    var totalRecord = pageInfo.total;

    // 声明相关属性
    var properties = {
        "num_edge_entries": 3,
        "num_display_entries": 5,
        "callback": paginationCallBack,
        "items_per_page": pageInfo.pageSize,
        "current_page": pageInfo.pageNum - 1,
        "prev_text": "上一页",
        "next_text": "下一页"
    }

    // 调用pagination()函数
    $("#Pagination").pagination(totalRecord, properties);
}



// 翻页时的回调函数
function paginationCallBack(pageIndex, jQuery) {

    // 修改window对象的pageNum属性
    window.pageNum = pageIndex + 1;

    // 调用分页函数
    generatePage();

    // 取消页码超链接的默认行为
    return false;

}